From: Florian Müllner Date: Tue, 19 Feb 2013 20:31:05 +0000 (+0100) Subject: appDisplay: Separate app loading from filling the grid X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4735 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=65f96494f801daa5474b5f25bfda22893e00400f;p=gnome-shell.git appDisplay: Separate app loading from filling the grid At the moment when loading the applications, each app is inserted at its correct (alphabetical) position. Avoid this overhead by loading all apps first, then sort them once and fill the grid with the sorted actors. https://bugzilla.gnome.org/show_bug.cgi?id=694192 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index cc4a665a9..e45c166bc 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -89,12 +89,21 @@ const AlphabeticalView = new Lang.Class({ return null; let itemIcon = this._createItemIcon(item); - let pos = Util.insertSorted(this._allItems, item, this._compareItems); - this._grid.addItem(itemIcon.actor, pos); - + this._allItems.push(item); this._items[id] = itemIcon; return itemIcon; + }, + + loadGrid: function() { + this._allItems.sort(this._compareItems); + + for (let i = 0; i < this._allItems.length; i++) { + let id = this._getItemId(this._allItems[i]); + if (!id) + continue; + this._grid.addItem(this._items[id].actor); + } } }); @@ -276,6 +285,7 @@ const AppDisplay = new Lang.Class({ _loadCategory(dir, this._view); } } + this._view.loadGrid(); if (this._focusDummy) { let focused = this._focusDummy.has_key_focus(); @@ -367,6 +377,7 @@ const FolderIcon = new Lang.Class({ this.view = new FolderView(); this.view.actor.reactive = false; _loadCategory(dir, this.view); + this.view.loadGrid(); this.actor.connect('clicked', Lang.bind(this, function() {